import UIKit

/**
 B站： https://www.bilibili.com/video/BV144411C7Gg?p=2
 
 第2课内容
 1 - 类型别名： typealias
 2 - 类型转换： 类型() 和 ??语法
 
 */

// other
// SwiftGG-翻译组: Swift 中类型别名的用途
// https://swift.gg/2020/04/11/2019-05-15-the-usefulness-of-typealiases/#more

typealias dog = Int

var a:dog = 10
var b:Int = 20

print(a, b)

// ------------------

typealias S = String

let c:S = "hello"
let d:String = " world"
print(c, d)
print(c + d)

//-------------------------------------------------------------------
//// 二、类型转换 （1）类型()

// 第1节课内容
print("值等于 = " + "\(a)")

// 类型转换
print("值等于 = " + String(a))

// 报错
//print("值等于 = " + a)

//-------------------------------------------------------------------
//// 二、类型转换 （2）??语法
// 警告  结果为: nil
var aa = "hello"
//print(Int(aa)) // 可切换方便 被注释掉了
var cc = Double(aa) ?? 0
print(cc)

//结果 ?? (nil/转换失败的)的值
//-------------------------------------------------------------------


print(Int(100.59))
print(Double(10))
print(Bool(0), Bool(1), Bool(-2), Bool(2.1))

//Bool(非0就是true), 那么问题来了
print(Bool("aaa") ?? "false")
print(Bool("") ?? "false")
// 结果为nil

// 解决，采用 ?? 语法 -- - - 类型转换的2种方法，结合使用
print(Bool("aaa") ?? false)
print(Bool("") ?? false)
